package com.mgfireworks.mgplatform.mgadmin.product;

import java.util.List;

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import cn.hn.java.summer.db.BaseDao;
import cn.hn.java.summer.db.multiple.DataSource1;
import cn.hn.java.summer.exception.BusinessException;
import cn.hn.java.summer.utils.DateUtils;
import cn.hn.java.summer.utils.IntUtils;
import cn.hn.java.summer.utils.StringUtils;

import com.mgfireworks.mgplatform.mgadmin.product.model.Product;
import com.mgfireworks.mgplatform.mgadmin.product.model.ProductDetail;

/**
 * 
 * @author nap
 * 20161015-10:19:48
 * 产品业务类
 */
@Service
public class ProductService extends BaseDao<DataSource1>{
	
	/**
	 * 取产品列表
	 * @return
	 */
	public List<Product> getProducts(Product p){
		return list("getProducts",Product.class,p);
	}

	/**
	 * 添加产品
	 */
	@Transactional(rollbackFor=Exception.class)
	public void addProduct(Product p, ProductDetail pd){
		p.setAddTime(DateUtils.now(DateUtils.YMDHMS2));
		p.setUpdateTime(DateUtils.now(DateUtils.YMDHMS2));
		update("addProduct",p);
		update("addProductDetail",pd);
	}
	
	/**
	 * 修改产品
	 */
	@Transactional(rollbackFor=Exception.class)
	public void editProduct(Product p, ProductDetail pd){
		p.setUpdateTime(DateUtils.now(DateUtils.YMDHMS2));
		update("editProduct",p);
		update("editProductDetail",pd);
	}
	
	/**
	 * 删除产品
	 */
	public void delProduct(Product p){
		update("delProduct",p);
	}
	
	/**
	 * 取产品
	 */
	public Product getProduct(Product p){
		return get("getProduct",Product.class,p);
	}
	
	/**
	 * 取新产品编号
	 * @param cateId
	 * @param bandId
	 * @return
	 * @throws BusinessException 
	 */
	public String newProductId(Integer cateId, Integer bandId) throws BusinessException{
		if(cateId==null || bandId==null){
			throw new BusinessException("参数为空");
		}
		
		Product p=new Product();
		p.setCateId(cateId);
		p.setBandId(bandId);
		String maxPid= get("getMaxProductId", String.class, p);
		String pid="";
		int index=1;
		if(maxPid!=null && maxPid.length()==3*4){
			index=IntUtils.parseInt(maxPid.substring(0, 2*4), 1)+1;
		}
		//4位类别+4位品牌+4位序号
		pid=StringUtils.leftPad(cateId.toString(), 4, '0');
		pid+=StringUtils.leftPad(bandId.toString(), 4, '0');
		pid+=StringUtils.leftPad(index+"", 4, '0');
		return pid;
	}
}